package org.no_ip.martin_springwald.google.api.extension.docs;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.gdata.client.Feed;

/**
 * DocumentsListMetadataEntry (DocsService)
 * 
 * @.dependencies gwt-gdata, GWT SDK 2.4
 */
public class DocumentsListMetadataEntry extends com.google.gwt.gdata.client.Entry<DocumentsListMetadataEntry> {

	// retrieve links and categories, extended from default functions
	/** getDocumentFeedLinks: <p>Retrieves all links contained in entry.</p> */
	public final native DocumentsListEntryLink[] getDocumentEntryLinks() /*-{ if (this.link) { return @com.google.gwt.gdata.client.impl.ArrayHelper::toArray(Lcom/google/gwt/core/client/JsArray;)(this.link); } else { return new Array(); } }-*/;
	/** getDocumentFeedCategories: <p>Retrieves all categories contained in entry.</p> */
	public final native DocumentsListEntryCategory[] getDocumentEntryCategories() /*-{ if (this.category) { return @com.google.gwt.gdata.client.impl.ArrayHelper::toArray(Lcom/google/gwt/core/client/JsArray;)(this.category); } else { return new Array(); } }-*/;

	// getters
	/** getQuotaBytesUsed: <p>Retrieves used up quota</p> */
	public final native String getQuotaBytesUsed() /*-{ if (this.gd$quotaBytesUsed) { return this.gd$quotaBytesUsed.$t; } else { return ""; } }-*/;
	/** getQuotaBytesTotal: <p>Retrieves available quota</p> */
	public final native String getQuotaBytesTotal() /*-{ if (this.gd$quotaBytesTotal) { return this.gd$quotaBytesTotal.$t; } else { return ""; } }-*/;
	/** getQuotaBytesUsedInTrash: <p>Retrieves used up quota by trash</p> */
	public final native String getQuotaBytesUsedInTrash() /*-{ if (this.gd$quotaBytesUsedInTrash) { return this.gd$quotaBytesUsedInTrash.$t; } else { return ""; } }-*/;
	/** getLargestChangestamp: <p>Retrieves largest changestamp</p> */
	public final native String getLargestChangestamp() /*-{ if (this.docs$largestChangestamp) { return this.docs$largestChangestamp.$t; } else { return ""; } }-*/;
	/** getRemainingChangestamps: <p>Retrieves remaining changestamps</p> */
	public final native String getRemainingChangestamps() /*-{ if (this.docs$remainingChangestamps) { return this.docs$remainingChangestamps.$t; } else { return ""; } }-*/;

	/** getImportFormats: <br/> get source and target formats for import */
	public final native DocumentsListImportExportFormat[] getImportFormats() /*-{ if (this.docs$importFormat) { return @com.google.gwt.gdata.client.impl.ArrayHelper::toArray(Lcom/google/gwt/core/client/JsArray;)(this.docs$importFormat); } else { return new Array(); } }-*/;
	/** getExportFormats: <br/> get source and target formats for export */
	public final native DocumentsListImportExportFormat[] getExportFormats() /*-{ if (this.docs$exportFormat) { return @com.google.gwt.gdata.client.impl.ArrayHelper::toArray(Lcom/google/gwt/core/client/JsArray;)(this.docs$exportFormat); } else { return new Array(); } }-*/;
	/** getFeatures: <br/> get list of features */
	public final native DocumentsListFeature[] getFeatures() /*-{ if (this.docs$feature) { return @com.google.gwt.gdata.client.impl.ArrayHelper::toArray(Lcom/google/gwt/core/client/JsArray;)(this.docs$feature); } else { return new Array(); } }-*/;
	/** getMaxUploadSizes: <br/> get list of max upload sizes */
	public final native DocumentsListMaxUploadSize[] getMaxUploadSizes() /*-{ if (this.docs$maxUploadSize) { return @com.google.gwt.gdata.client.impl.ArrayHelper::toArray(Lcom/google/gwt/core/client/JsArray;)(this.docs$maxUploadSize); } else { return new Array(); } }-*/;

	//TODO: implement docs:additionalRoleInfo
	
	// constructors
	/**
	 * newInstance: <p>Creates new MetadataEntry instance (Atom).</p>
	 * @return DocumentsListMetadataEntry
	 */
	public static native DocumentsListMetadataEntry newInstance() /*-{ return new $wnd.google.gdata.Entry(); }-*/;
	protected DocumentsListMetadataEntry() { }
	public static final native JavaScriptObject getConstructor() /*-{ return $wnd.google.gdata.Entry; }-*/;
	  
}